The present invention relates to the field of computer graphics, and in particular to methods and apparatus for creating, modifying, and using components to create computer graphics productions. Many computer graphic images are created by mathematically modeling the interaction of light with a three dimensional scene from a given viewpoint. This process, called rendering, generates a two-dimensional image of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene. Animated sequences can be created by rendering a sequence of images of a scene as the scene is gradually changed over time. A great deal of effort has been devoted to making realistic looking and artistically compelling rendered images and animations.
Computer graphics images, animations, and other productions involving computer graphics, such as interactive entertainment software, are created from a number of different components. Generally, components include any data and instructions used to create products and applications that include computer graphics. Components can include three-dimensional models of geometry; texture maps, other arrays of data, lighting, and shading programs used to determine the visual appearance of models; and animation data and deformer functions used to specify changes and motion over time. One or more components are typically stored as a digital asset. A digital asset can be a file, database table, executable program or script, or any other type of persistent data store.
Components typically include one or more attributes containing data associated with the component. Attributes can specify any static or varying property of a component. For example, a component may be a model of a sphere. Attributes of this example component could describe properties such as the radius of the sphere and the location of the center of the sphere. Different types of components may include different numbers and types of attributes. The structure and arrangement of the set of attributes associated with a component is referred to as the semantic structure of the component. Different components may have different semantic structures, based on the type of component and its intended use.
Digital production pipelines include modeling, shading, articulation, animation, simulation, layout, lighting, and rendering. Modeling is the creation of the three-dimensional geometry of characters, sets, props, and other objects. Shading is the specification of optical attributes of the surface and interior of objects. Articulation is the specification of joints and other moveable elements of objects. Animation specifies the motion of objects over time in one or more scenes, often with reference to the objects' articulation. Simulation specifies the motion, appearance, and/or behavior of objects. Layout specifies the arrangement of objects and cameras in one or more scenes. Lighting defines the location and other attributes of light in one or more scenes. Rendering produces images or animation from the components.
Users at each stage of the digital production pipeline create or modify numerous components to be used in creating a computer graphics image, animation, or other type of production using one or more software application tools. Components are typically combined during rendering to produce an animated sequence. For example, geometric models, shading programs and data, lighting, animation data, and deformers all need to be combined correctly to produce a rendered image or scene.
Users may be presented with hundreds or thousands of components at each stage of the digital production pipeline. Although necessary to the production, many of these components may be irrelevant to the current stage of the digital production pipeline. Displaying a large number of irrelevant components can hinder a user's ability to perform a task. A large number of irrelevant components can also hinder the performance of software application tools, further decreasing a user's productivity.
Prior software application tools included manual techniques for hiding components from users. Often, such manual selection interfaces are error-prone and cumbersome to use and require users to spend substantial time selecting components to be hidden.
Some prior software application tools could hide components based on the specification of filters based on component types. Typically, prior software application tools enabled filtering of components by component type or by components related to each other in a tree data structure. These types of filters may reduce the number of irrelevant components being displayed; however, this reduction is often insufficient for complex productions. Users at each digital production pipeline stage often manipulate components of many different types. Thus, component filtering based on component types is often either overinclusive or underinclusive in selecting relevant components at each digital production pipeline stage. As a result, users must spend substantial time changing or adjusting filters to access the relevant components. Furthermore, component filters based on more complicated queries may miss critical components or become out of date as the production evolves. Additionally, prior software application tools often associate components with application functions. As a result, filters often unnecessarily limit their functionality when filtering components, hindering user productivity.
Moreover, different attributes of a component may be relevant to different stages of the digital production pipeline. For example, the deformer components used to animate a character model may be accessed in the articulation stage of the digital production pipeline, where it is created, and the animation stage of the digital production pipeline, where an animator uses the deformer component to create animation. Many attributes of this example deformer component may be irrelevant to users in the animation stage. Moreover, users in the animation stage that modify these irrelevant attributes may inadvertently introduce errors that break their own and others work. However, the filtering provided by prior software applications is too coarse to effectively present only relevant portions of components at each stage of the digital production pipeline.
It is therefore desirable for a system and method to present components or portions thereof that are relevant to each stage of the digital production pipelines without including substantial numbers of irrelevant components. It is further desirable for the system and method to easily specify relevant components or portions thereof in a consistent manner that does not require frequent adjustments. It is also desirable for the system and method to enable the enforcement of policies about the locations in the digital production pipeline where components and portions thereof can or cannot be accessed or modified to prevent the inadvertent introduction of errors.